// 元素类型枚举
export enum ElementType {
  SHAPE = 'shape',
  IMAGE = 'image',
  TEXT = 'text'
}

// 图形子类型枚举
export enum ShapeType {
  RECT = 'rect',
  ROUNDED_RECT = 'roundedRect',
  CIRCLE = 'circle'
}

// 图片滤镜枚举
export enum ImageFilter {
  NONE = 'none',
  GRAYSCALE = 'grayscale(100%)',
  BLUR = 'blur(2px)',
  BRIGHTNESS = 'brightness(150%)'
}

// 图形元素属性
export interface ShapeElement {
  id: string
  type: ElementType.SHAPE
  shapeType: ShapeType
  x: number // 左上角X坐标
  y: number // 左上角Y坐标
  width: number
  height: number
  background: string // 背景色
  borderWidth: number
  borderColor: string
}

// 图片元素属性
export interface ImageElement {
  id: string
  type: ElementType.IMAGE
  x: number
  y: number
  width: number
  height: number
  src: string // Base64字符串
  filter: ImageFilter
}

// 文本元素属性（Quill Delta格式）
export interface TextElement {
  id: string
  type: ElementType.TEXT
  x: number
  y: number
  width: number // 文本框宽度
  height: number // 文本框高度
  delta: { ops: any[] } // Quill输出的Delta
  defaultStyle: {
    fontSize: number
    fontFamily: string
    color: string
    background: string
  }
}

// 所有元素类型联合
export type CanvasElement = ShapeElement | ImageElement | TextElement

// 画布状态
export interface CanvasState {
  panX: number // X轴偏移
  panY: number // Y轴偏移
  zoom: number // 缩放比例（默认1）
}

// 选中状态
export interface SelectionState {
  selectedElementIds: string[] // 选中元素ID数组
}